A mobile terminal comprises several components which all have their dedicated tasks related to the communication and application services provided to the user of the terminal. These components are frequently designed separately from each other and commonly they each have their own memories for storing data and instructions.
Ad-hoc use of memories is a big problem in mobile terminals. This situation is caused by the design style where memories are reserved for dedicated purposes and secure runtime allocation of unused memory for other purposes is very difficult or even impossible.
Implementing a modular system with separated subsystems is a difficult task. In particular, the memory subsystem needs to be considered carefully. It should offer high performance, secure data storage, low power consumption, reliable packaging, and low costs. To enable a modular design style, each subsystem should have its own memories. On the other hand, a more cost effective solution is to have a centralized memory distributed to all the subsystems. A centralized memory manager can make the memory look (logically) dedicated for a single subsystem, although it is (physically) accessible by all.
An additional issue with current memory implementations is that they do not scale very well. The bus widths remain flat at 16/32 bits and the frequencies cannot be increased dramatically due to the increasing power consumption associated therewith.
Furthermore, DRAMs (dynamic random access memory) and other memories are on similar but still different technology tracks than logic circuits. That is, the DRAM and logic dies are fabricated in different processes, e.g. also with different structure widths (90 nm vs. 130 nm etc.). Nevertheless, the connections between the DRAM and logic dies should be short (for enabling fast speeds/low latencies and low power consumption) and large with respect to their quantity (for enabling large bandwidths). These are requirements that are impossible to meet with traditional technologies since conventional dies have bonding pads only on their sides.
Conventionally, large parts of the memories of a mobile terminal have been dedicated to a limited set of purposes. The global memory has been divided among very few (1-2) subsystems statically. No system level guarantees with respect to data security have been offered. In addition, the performance and power issues have not been dealt with.
As mentioned above, memory is a critical resource in a mobile terminal. Mobile terminals have multiple concurrent subsystems sharing the same execution memory, which is usually DRAM. This makes the execution memory a performance bottleneck in the system. The slow evolvement of the bandwidth offered by an external DRAM compared to the very fast growth of logic speed and functionality (so called Moore's law) is a well-known fact. It has been visible in the PC-industry for decades but these issues have also recently begun to emerge in mobile terminals.
The PC-way of dealing with the memory bandwidth problem is to have multiple levels of hierarchy (caches) in the architecture and to utilize very high frequencies in the memory I/O bus. Both of these techniques burn a lot of power and are therefore difficult to use in a power-limited system like a mobile electronic device. If the depth of the memory hierarchy or the bus frequency cannot be increased, the only option that is left is to increase the width of the memory bus. Because the width of the bus is dictated by current standards and limited by the standard packaging technologies of mobile DRAMs this cannot be done without a new technology for connecting memory and logic. Traditionally mobile DRAMs have followed the general-purpose (PC) DRAMs with a small, few years delay. The bit widths of standard DRAMs have not increased beyond 16/32 bits, so the only way for the DRAMs to increase bandwidth has been to increase I/O bus frequency. In addition, several “one-time tricks” have been used, e.g. utilizing both edges of the bus clock to transfer two data elements in one clock cycle (DDR=double data rate). On the logic die this has forced the utilization of more and more levels in the cache hierarchy. As stated before, this is not a power-efficient way to increase memory bandwidth.
The prior art therefore has a number of disadvantages. There is no standardized memory management scheme for global execution memory that would be applicable to a wide-spread mobile terminal use. System packaging using the conventional techniques is becoming very complex in mobile terminals, which constitutes a very high bill-of-materials (BOM). The upcoming multiprocessor architectures create a number of new problems. Particularly, memory coherency must be maintained, which is non-trivial. That is, the memory architecture must guarantee that one processor cannot change the data of another processor in an uncontrolled manner.
Modular architectures require distributed memory to exploit the natural advantages of that scheme. Physically distributed memory is prohibited due to the associated costs, so a memory architecture should be able to emulate distributed memory with physically centralized memory (external DRAM). Moreover, in modular and multiprocessor designs it is important that the components cannot access memory in an uncontrolled manner. This would be a security problem and memory over-allocation could cause software crashes or quality-of-service mishaps. The consistently rising physical distance between memory and the subsystems using it is also becoming a problem. Increasing the distance means increased power consumption and delay which is undesirable.